package ru.susu.algebra.wrapper.number;

import java.math.BigInteger;

/**
 * Обертка числа, нужна для одинаковой работы как с int,так и с BigInteger.
 *
 * @author akargapolov
 * @since: 24.03.2009
 */
public interface INumberWrapper<T>
{
	INumberWrapper<T> add(INumberWrapper<T> other);

	INumberWrapper<T> subtract(INumberWrapper<T> other);

	INumberWrapper<T> multiply(INumberWrapper<T> other);

	INumberWrapper<T> divide(INumberWrapper<T> other);

	INumberWrapper<T> mod(BigInteger mod) throws Exception;

	long remainder(long val);

	T getValue();

	void setValue(Number value);
}
